#pragma once

#include <algorithm>
#include <vector>


namespace txdnn {
namespace backend {

struct OpKernelArg {
    OpKernelArg(char value, size_t size) : buffer_(size) { std::fill(buffer_.begin(), buffer_.end(), value); }

    template <typename T>
    OpKernelArg(T arg) : buffer_(sizeof(T)) {
    // TODO
    }

    template <typename T>
    OpKernelArg(T* arg) : buffer_(sizeof(T*)) {
    // TODO
    is_pointer_ = true;
    }

    std::size_t size() const { return buffer_.size(); }

    std::vector<char> buffer_;
    bool is_pointer_ = false;
};

} // namespace backend
} // namespace txdnn
